<?php
class ValidarParticipanteController extends BaseController{

	private $listaAcesso = array();
	private $perfilExpositor = 2;

    private function montarListaSelecionados(){
    	$item="";
    	$params="";
		if ($this->_hasParam("check")){
    		$item='check';
    		$params=$this->_request->getPost();
			for($i=0; $i<count($params[$item]); $i++){
				$objeto = new AcessoEvento();
				$objeto->load($params[$item][$i]);
				$this->listaAcesso[] = $objeto;
			}
		} elseif ($this->_hasParam("id_acesso")){
			$objeto = new AcessoEvento();
			$objeto->load($this->_getParam("id_acesso"));
			$this->listaAcesso[] = $objeto;
		}

    }

    private function validarParticipacao(){
    	$authNamespace = new Zend_Session_Namespace('Zend_Auth');
    	$db = Zend_Registry::get('db');
    	$db->beginTransaction();
    	try{
			for($i=0; $i<count($this->listaAcesso); $i++){
				//Validar acesso
				$this->listaAcesso[$i]->id_status=1; //Acesso permitido
				$this->listaAcesso[$i]->salvar();

				$status		=$this->listaAcesso[$i]->id_status;
				$old_status	=$this->listaAcesso[$i]->old_status;
				$catPart	=$this->listaAcesso[$i]->id_categoria_acesso;
				if (($status==1) && (($old_status==2) or ($old_status==3))){ //2-Confirmação pendente   3-E-mail confirmado
					//Gerar autenticação para o even
					$autenticacao = new Autenticacao();
					$autenticacao->id_acesso			=$this->listaAcesso[$i]->id_acesso;
					$autenticacao->in_ativo 			=1;
					$autenticacao->id_categoria_acesso	=$catPart;
					$autenticacao->dt_criacao			=date('Y-m-d H:m:s');
					$autenticacao->id_usuario			=$authNamespace->id_usuario;
					$autenticacao->salvar();

					if ($catPart==1 || $catPart==2){ //1=Expositor 2=Operador
						//carrega participante
						$fisica = new Fisica();
						$fisica->load($this->listaAcesso[$i]->id_participante);
						//Carrega empresa que o participante é vinculado
						$juridica = new Juridica();
						$juridica->load($fisica->id_juridica);

						//Gerar login
						$login = new Login();
						$mail	= $fisica->ds_email;
						$pessoa = $fisica->id_fisica;
						$user= strtolower((rtrim(ltrim(substr($juridica->ds_nome, 0, 8)))));
						$login->gerarLoginAutomatico($user, $mail, $pessoa, $this->perfilExpositor);
						//Carrega a descrição da categoria
						$categoria = new CategoriaParticipante();
						$categoria->load($catPart);
						//Carrega o evento
						$evento=new Evento();;
						$evento->load($this->listaAcesso[$i]->id_evento);
						MailController::enviarEmailLogin($fisica->ds_email, $user, $login->getPass(), $categoria->ds_categoria, $evento->nm_evento, substr($evento->dt_inicial, 0, 4));
						if ($catPart==1){
							$expositor = new Expositor();
							$expositor->id_juridica=$juridica->id_juridica;
							$expositor->nr_credencial=1;
							$expositor->id_evento    =$this->listaAcesso[$i]->id_evento;
							$expositor->ds_posicao_evento='A0';
							$expositor->salvar();
						}
					}
				}
			}
			$db->commit();
    	}catch (Exception $e){
    		$db->rollBack();
    		echo '<BR> ERRO: '.$e->getMessage();
    	}
	}

    private function excluirParticipacao(){
    	$authNamespace = new Zend_Session_Namespace('Zend_Auth');
    	$db = Zend_Registry::get('db');
    	$db->beginTransaction();
    	try{
			for($i=0; $i<count($this->listaAcesso); $i++){
				//Validar acesso
				$this->listaAcesso[$i]->excluir($this->listaAcesso[$i]->id_acesso);
			}
			$db->commit();
    	}catch (Exception $e){
    		$db->rollBack();
    		echo '<BR> ERRO: '.$e->getMessage();
    	}
	}

	public function excluirAction(){
		$this->_helper->viewRenderer->setNoRender();
		if ((strtolower($_SERVER['REQUEST_METHOD']) == 'post') || ($this->_hasParam("id_acesso"))){
			$this->montarListaSelecionados();
			$this->excluirParticipacao();
		}
		$this->montarParametros($this->_getAllParams());
		$this->_redirect('validarparticipante/index'.$this->parametrosConsulta);
        return;
	}

	public function validarAction(){
		$this->_helper->viewRenderer->setNoRender();
		if ((strtolower($_SERVER['REQUEST_METHOD']) == 'post') || ($this->_hasParam("id_acesso"))){
			$this->montarListaSelecionados();
			$this->validarParticipacao();
		}
		$this->montarParametros($this->_getAllParams());
		$this->_redirect('validarparticipante/index'.$this->parametrosConsulta);
        return;
	}

	private function popularView($array){
		$this->view->categoria  	= (int) $array['categoria'];
        $this->view->empresa 		= trim($this->filter->filter($array['empresa']));
        $this->view->participante 	= trim($this->filter->filter($array['participante']));
        $this->view->status 		= (int) $array['status'];
        $this->view->fumtur 		= (int) $array['fumtur'];
        $this->view->evento			= (int) $array['id_evento_filtro'];
	}
	
    function indexAction(){
    	$this->view->linkManual = $this->_request->getBaseUrl()."/public/manual/manual_validar_participacao.html";
		$this->view->idAcesso= array();
		$this->view->title = "Validação de participantes";
       	$this->view->action = $this->view->baseUrl . '/validarparticipante/index';
       	if (strtolower($_SERVER['REQUEST_METHOD']) == 'post' ||  !is_null($this->_request->getParam('btConsultar'))) {
       		if (!array_key_exists('id_evento_filtro', $this->_request->getPost())){
       			$this->view->mensagem_erro = ModelController::getMessage(9);
       			return;
       		}
        	
       		if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
       			$arr_view = $this->_request->getPost();
       		} else {
       			$arr_view = $this->_request->getParam();
       		}
       		$this->popularView($arr_view);
       		$this->montarParametros($arr_view);
          	
        	$acesso = new AcessoEvento(false);
			$this->view->dadosConsulta = $acesso->buscar($this->view->evento, 
														 $this->view->categoria, 
														 $this->view->participante, 
														 $this->view->empresa, 
														 null, 
														 null, 
														 $this->view->status, 
														 $this->view->fumtur);
		}
		else {
			$this->view->dadosConsulta = null;
			$this->view->categoria=null;
			$this->view->empresa=null;
			$this->view->participante=null;
			$this->view->status=null;
			$this->view->fumtur=null;
		}
		$this->render();
	}
}